/* Araujo Heiker CI. 19726991
 * Goyo Willandher CI.20666542
 * Rodriguez Rafael CI.20009872
 * Williams Roman CI.20016812 
 * Morett Gilberth CI.20929667*/

package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import vista.VentanaCliente;
import vista.VentanaConsultaCliente;
import modelo.Cliente;
import modelo.Drogueria;
import modelo.Producto;

public class ControladorVentanaCliente implements ActionListener {
	
	private VentanaCliente ventanaCliente;
	private VentanaConsultaCliente consultaCliente;
	private Cliente cliente;
	private Drogueria drogueria;
	private String imec;
	String codigo;
	boolean estatus;
	
	public ControladorVentanaCliente(Drogueria drogueria){
		ventanaCliente = new VentanaCliente();
		ventanaCliente.agregarListener(this);
		ventanaCliente.setLocationRelativeTo(null);
		ventanaCliente.setVisible(true);
		ventanaCliente.setVisibleBtnAceptar(false);
		ventanaCliente.setVisibleBtnGuardar(true);
		this.drogueria = drogueria;
		
	}
	
	public ControladorVentanaCliente(Drogueria drogueria,String imec,String codigo){
		ventanaCliente = new VentanaCliente();
		ventanaCliente.agregarListener(this);
		ventanaCliente.setLocationRelativeTo(null);
		ventanaCliente.setVisible(true);
		this.drogueria = drogueria;
		this.imec = imec;
		this.codigo=codigo;
		ventanaCliente.setVisibleBtnAceptar(true);
		ventanaCliente.setVisibleBtnGuardar(false);
		this.inicializarVentana();
		
	}
	
	
	
	@Override
	public void actionPerformed(ActionEvent e) {
		
		if (e.getActionCommand().equalsIgnoreCase("Incluir")) {
			
			if(verificarCliente()==false)
			{
				if(verificarCajasTxt()==false)
					ventanaCliente.mostrarMensaje("Error debe de llenar todos los campos");
				else
				{
					incluirCliente();
					ventanaCliente.dispose();
				}
					
					
			}
			else
			{
				ventanaCliente.mostrarMensaje("ERROR! Cliente ya incluido con este codigo!");
			}
			
		}
		
		else{
			
			if(e.getActionCommand().equalsIgnoreCase("Aceptar")){
				incluirModificarCliente();
				ventanaCliente.dispose();
				estatus = false;
			}
		
			else{
				if(e.getActionCommand().equalsIgnoreCase("Cancelar")) {
					ventanaCliente.limpiarTxt();
				}
					
			}
		}
		
		
					
	}
	
	public void incluirCliente() {
		
	
			String id ;
			String nombre;
			String telefono;
			String correo;
			String direccion;
			id = ventanaCliente.getTxtId();
			nombre = ventanaCliente.getTxtNombre();
			telefono = ventanaCliente.getTxtTelefono();
			correo = ventanaCliente.getTxtCorreo();
			direccion = ventanaCliente.getTxtDireccion();
			Cliente cliente = new Cliente();

			cliente.setId(id);
			cliente.setNombre(nombre);
			cliente.setTelefono(telefono);
			cliente.setCorreo(correo);
			cliente.setDireccion(direccion);
			cliente.setEstatus(Cliente.ACTIVO);

			drogueria.incluirCliente(cliente);

			ventanaCliente.mostrarMensaje("Registro con exito");
			new ControladorVentanaConsultaCliente(drogueria);

			
			
		
	}


	public void incluirModificarCliente(){
		int indice = drogueria.buscarCliente(codigo);
		Cliente cliente = drogueria.getUnCliente(indice);

		String id ;
		String nombre;
		String telefono;
		String correo;
		String direccion;
		id = ventanaCliente.getTxtId();
		nombre = ventanaCliente.getTxtNombre();
		telefono = ventanaCliente.getTxtTelefono();
		correo = ventanaCliente.getTxtCorreo();
		direccion = ventanaCliente.getTxtDireccion();
		

		cliente.setId(id);
		cliente.setNombre(nombre);
		cliente.setTelefono(telefono);
		cliente.setCorreo(correo);
		cliente.setDireccion(direccion);
		cliente.setEstatus(Cliente.ACTIVO);

		drogueria.setUnCliente(indice, cliente);

		ventanaCliente.mostrarMensaje("Modificacion con exito");
		new ControladorVentanaConsultaCliente(drogueria);
	}

	public boolean verificarCliente(){
		
		String id = ventanaCliente.getTxtId();
		 estatus = false;
		
		
		for(int i =0;i<drogueria.cantidadClientes();i++)
		{
			if(id.equals(drogueria.getUnCliente(i).getId()))
			{
				estatus = true;
				
				if(drogueria.getUnCliente(i).getEstatus()==Cliente.INACTIVO  )	{
					estatus = false;
				}
					

			}
				
				
		}
		
		return estatus;

	}
	
	public boolean verificarCajasTxt(){
		
		String id ;
		String nombre;
		String telefono;
		String correo;
		String direccion;
		id = ventanaCliente.getTxtId();
		nombre = ventanaCliente.getTxtNombre();
		telefono = ventanaCliente.getTxtTelefono();
		correo = ventanaCliente.getTxtCorreo();
		direccion = ventanaCliente.getTxtDireccion();
		boolean estatus = true;
		
		if(id.equals("") ||nombre.equals("")||telefono.equals("") || correo.equals("")||direccion.equals(""))
			estatus = false;
		
		return estatus;
	}

	public void inicializarVentana() {

		if (imec.equals("Modificar")) {

			modificarCliente();
		} else if (imec.equals("Buscar")) {
			buscarCliente();
		}
	}
	
	public void modificarCliente() {

		
		int indice = drogueria.buscarCliente(codigo);
		Cliente cliente = drogueria.getUnCliente(indice);
		String id ;
		String nombre;
		String telefono;
		String correo;
		String direccion;
		id = cliente.getId();
		nombre = cliente.getNombre();
		telefono = cliente.getTelefono();
		correo = cliente.getCorreo();
		direccion = cliente.getDireccion();
		
		ventanaCliente.setId(id);
		ventanaCliente.setNombre(nombre);
		ventanaCliente.setTelefono(telefono);
		ventanaCliente.setCorreo(correo);
		ventanaCliente.setDireccion(direccion);

	}

	public void buscarCliente() {

		
		int indice = drogueria.buscarCliente(codigo);
		Cliente cliente = drogueria.getUnCliente(indice);
		String id ;
		String nombre;
		String telefono;
		String correo;
		String direccion;
		id = cliente.getId();
		nombre = cliente.getNombre();
		telefono = cliente.getTelefono();
		correo = cliente.getCorreo();
		direccion = cliente.getDireccion();
		
		ventanaCliente.setId(id);
		ventanaCliente.setNombre(nombre);
		ventanaCliente.setTelefono(telefono);
		ventanaCliente.setCorreo(correo);
		ventanaCliente.setDireccion(direccion);
	}
}
